import {
    searchBudgetSettlementReviewList,
    deleteRowById,
    exportRegistration,
    exportWord
} from "@/views/wy-budget/budget-settlement-review/api/budget-settlement-review.js";
import { mapGetters } from "vuex";

export default {
    name: "resource-manage",
    provide () {
        return {
            initList: this.query
        };
    },
    computed: {
        ...mapGetters(["permissions"])
    },
    data () {
        return {
            //按钮权限
            budgetsettlementreview_edit: false,
            budgetsettlementreview_del: false,
            loading: true,
            params: {
                current: 1,
                size: 20,
                keyword: ""
            },
            // 选中的数据
            selectDataArr: [],
            pager: {
                total: 0, // 总页数
                current: 1, // 当前页数
                size: 20 // 每页显示多少条
            },
            //表单数据
            tableData: []
        };
    },
    //载入事件
    mounted () {
        this.budgetsettlementreview_edit = this.permissions["budgetsettlementreview_edit"];
        this.budgetsettlementreview_del = this.permissions["budgetsettlementreview_del"];
        //查询
        this.query();
    },
    methods: {
        // 菜单点击监听
        handleMenuClick (type) {
            switch (type) {
                case "add":
                    this.$router.push("/wy-operate/repair/settlement-add");
                    break;
                case "export":
                    this.exportReg();
                    break;
            }
        },
        //  * 查询方法
        query (params = {costPriceType:0}) {
            this.loading = true;
            let req = { ...this.params, ...params };
            searchBudgetSettlementReviewList(req)
                .then(res => {
                    const { current, size, total, records } = res.data.data;
                    this.tableData = records;
                    this.params = req;
                    this.pager = { total, current, size };
                })
                .catch(error => {
                    this.$message({
                        type: "error",
                        message: "查询失败"
                    });
                })
                .finally(() => (this.loading = false));
        },

        /**
         * 列表导出
         */
        exportReg (params = { costPriceType: 0 ,size: 9999}) {
            let req = { ...this.params, ...params };
            exportRegistration(req).then(res => {
                // 关闭loading
                this.loading = false;
                // 此处有个坑。这里用content保存文件流，最初是content=res，但下载的test.xls里的内容如下图1，
                // 检查了下才发现，后端对文件流做了一层封装，所以将content指向res.data即可
                // 另外，流的转储属于浅拷贝，所以此处的content转储仅仅是便于理解，并没有实际作用=_=
                const content = res.data;
                const blob = new Blob([content]); // 构造一个blob对象来处理数据
                const fileName = "工程造价预算登记.xls"; // 导出文件名
                // 对于<a>标签，只有 Firefox 和 Chrome（内核） 支持 download 属性
                // IE10以上支持blob但是依然不支持download
                if ("download" in document.createElement("a")) {
                    // 支持a标签download的浏览器
                    const link = document.createElement("a"); // 创建a标签
                    link.download = fileName; // a标签添加属性
                    link.style.display = "none";
                    link.href = URL.createObjectURL(blob);
                    document.body.appendChild(link);
                    link.click(); // 执行下载
                    URL.revokeObjectURL(link.href); // 释放url
                    document.body.removeChild(link); // 释放标签
                } else {
                    // 其他浏览器
                    navigator.msSaveBlob(blob, fileName);
                }
                this.btnSendTem = false;
            });
        },
        /**
         * 删除
         * @param scope
         */
        deleteRow (scope) {
            this.$confirm("此操作将永久删除该记录, 是否继续?", "提示", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning"
            })
                .then(() => {
                    deleteRowById(scope.row.seReId)
                        .then(resp => {
                            this.query();
                        })
                        .catch(error => {
                            this.$message({
                                type: "error",
                                message: "操作失败"
                            });
                        })
                        .finally(() => (this.loading = false));

                    this.$message({
                        type: "success",
                        message: "删除成功!"
                    });
                })
                .catch(() => {
                    this.$message({
                        type: "info",
                        message: "已取消删除"
                    });
                });
        },

        /**
         * 导出政府投资项目登记表
         * @param scope
         */
        exportWordTem(scope){
            exportWord(scope.row.seReId,scope.row.costPriceType).then(res => {
                // 关闭loading
                this.loading = false;
                // 此处有个坑。这里用content保存文件流，最初是content=res，但下载的test.xls里的内容如下图1，
                // 检查了下才发现，后端对文件流做了一层封装，所以将content指向res.data即可
                // 另外，流的转储属于浅拷贝，所以此处的content转储仅仅是便于理解，并没有实际作用=_=
                const content = res.data;
                const blob = new Blob([content]); // 构造一个blob对象来处理数据
                const fileName = "工程造价预算审核书.docx"; // 导出文件名
                // 对于<a>标签，只有 Firefox 和 Chrome（内核） 支持 download 属性
                // IE10以上支持blob但是依然不支持download
                if ("download" in document.createElement("a")) {
                    // 支持a标签download的浏览器
                    const link = document.createElement("a"); // 创建a标签
                    link.download = fileName; // a标签添加属性
                    link.style.display = "none";
                    link.href = URL.createObjectURL(blob);
                    document.body.appendChild(link);
                    link.click(); // 执行下载
                    URL.revokeObjectURL(link.href); // 释放url
                    document.body.removeChild(link); // 释放标签
                } else {
                    // 其他浏览器
                    navigator.msSaveBlob(blob, fileName);
                }
                this.btnSendTem = false;
            });
        }
    }
};
